public class ObjectIO{
    /**
     * ObjectOutputStream  对象输出流
     * 使用方式：1.创建实现序列化接口的对象
     *        2.对象输出流---xxx.obj文件
     *        传输对象,指定格式obj
     */
    @Test
    public void testOOS() throws IOException{...}

    /**
     * ObjectInputStream  对象输入流
     * 序列化：将对象转换为二进制
     * 反序列化：二进制转换为对象
     * readObject()  返回读取的对象【？】
     * 需求：将序列化person.obj文件   按照对象方式读入
     */
    @Test
    public void testOIS(){
        //创建低级流
        FileInputStream fis=new FileInputStream(name:"person.obj");
        //创建高级流---对象读入
        ObjectInputStream ois=new ObjectInputStream(fis);
        //readObject()获取对象【反序列化操作：二进制转换为对象】
        System.out.println(ois.readObject());
        System.out.println("反序列化成功！");
    }
public class Person implements Serisalizable{
    /**
     * 版本号：决定反序列化是否成功【字节文件转换为对象】 唯一标识
     *       类实现Serializable接口,具备序列化功能,类自动生成版本号
     *       建议:重写版本号
     *       每次增加代码或者减少代码,统一版本号,读入【反序列化成功】
     *       实现程序升级降级操作
     * JavaBean：Java豆子---按照规范编写实体类
     */
    private static final long serialVersionUID=2L;

    private String name;//私有属性m,  ,k
}
}
public class testOOS() {
    //1.创建Person对象
    Person p=new Person();
    p.setName("韩美娟")
    //数组--动态数组
    //    String[]  str=new String[]{}
            p.setSay(new String[]{"百因必有果，你的报应就是我"})
    System.out.println("打印对象："+p);

    //对象输出写出文件   xxx.obj  Person.java
    FileOutputStream fos=
            new FileOutputStream(name:"person.obj");
    ObjectOutputStream oos=newObjectOutputStream(fos);
    /**
     * writeObject(Object obj)     ----理解：写出对象
     * 该放法会将给定对象按照其结构进行转换
     * 转换为一组"组“字节,在通过其处理的流写出
     *
     * NotSerializableException 没有序列化异常
     * 原因：写出类没有实现序列化接口
     *
     * 写出文件专业术语
     * 1.通过对象输出流将Person类,先转换为一组"组"字节，在这个过程【对象序列化】
     * 2.将序列化后的字节在通过字节流【低级流】写入文件中【硬盘上】做长久保存,这个过程【数据持久化】
     * 将person.obj持久化保存硬盘上
     */
    oos.writeObjedt(p);
    System.out.println("写出成功了~~~")
}
